package com.utilities;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Log;
import android.util.Xml;

public class RssParserPull
{
	private URL rssUrl;
	
    public RssParserPull(String url) 
    {
		try 
		{
            this.rssUrl = new URL(url);
        } 
		catch (MalformedURLException e) 
		{
            throw new RuntimeException(e);
        }
    }
    
    public List<Informacion> parse() 
    {
        List<Informacion> informacion = null;
        XmlPullParser parser = Xml.newPullParser();
        
        try 
        {
            parser.setInput(this.getInputStream(), null);
            
            int evento = parser.getEventType();
            
            Informacion informacionActual = null;
            
            while (evento != XmlPullParser.END_DOCUMENT)
            {
                String etiqueta = null;
                
                switch (evento)
                {
                    case XmlPullParser.START_DOCUMENT:
                    	
                    	informacion = new ArrayList<Informacion>();
                        break;
                        
                    case XmlPullParser.START_TAG:
                    	
                    	etiqueta = parser.getName();
                        
                        if (etiqueta.equals("ROW"))
                        {
                        	informacionActual = new Informacion();
                        } 
                        else if (informacionActual != null)
                        {
                        	if(etiqueta.equals("poi_idr")){
                        		
                        		informacionActual.setId(parser.nextText());
                        		
                        	}else
                        		
                            if(etiqueta.equals("poi_nombre")){
                            		
                            	informacionActual.setNombre(parser.nextText());
                            		
                            }else
                            	
                            if(etiqueta.equals("poi_foto")){
                            		
                                informacionActual.setFoto(parser.nextText());
                                		
                            }else
                            	
                            if(etiqueta.equals("poi_direccion")){
                            		
                               informacionActual.setDireccion(parser.nextText());
                                    		
                            }else
                            	
                            if(etiqueta.equals("poi_metro")){
                            		
                               informacionActual.setMetro(parser.nextText());
                                         		
                            }else
                            	
                            if(etiqueta.equals("poi_descripcion")){
                            		
                               informacionActual.setDescripcionPoi(parser.nextText());
                                              		
                            }else
                            	
                            if(etiqueta.equals("poi_metrobus")){
                            		
                               informacionActual.setMetroBus(parser.nextText());
                                              		
                            }else
                            	
                            if(etiqueta.equals("poi_servicios")){
                            		
                               informacionActual.setServicios(parser.nextText());
                                                   		
                            }else
                            	
                            if(etiqueta.equals("poi_clasificacion")){
                            		
                              informacionActual.setClacificacion(parser.nextText());
                                                        		
                            }else
                            	
                           if(etiqueta.equals("poi_www")){
                            		
                               informacionActual.setWww(parser.nextText());
                                                              		
                            }else
                           
                           if(etiqueta.equals("poi_mail")){
                            		
                               informacionActual.setMail(parser.nextText());
                                                                   		
                            }else
                            	
                            if(etiqueta.equals("poi_tel")){
                            		
                               informacionActual.setTel(parser.nextText());
                                                                        		
                            }else
                            	
                             if(etiqueta.equals("poi_lat")){
                            		
                                informacionActual.setLat(parser.nextText());
                                                                             		
                            }else
                            	
                            if(etiqueta.equals("poi_lng")){
                            		
                              informacionActual.setLng(parser.nextText());
                                                                                 		
                            }else
                            	
                            if(etiqueta.equals("poi_idioma")){
                            		
                                informacionActual.setIdioma(parser.nextText());
                                                                                       		
                            }else
                        	
                            if(etiqueta.equals("poi_ruta")){
                            		
                               informacionActual.setRuta(parser.nextText());
                                                                                           		
                            }else
                            	
                            if(etiqueta.equals("poi_horario")){
                            		
                                informacionActual.setHorario(parser.nextText());
                                                                                                		
                             }else
                            	 
                             if(etiqueta.equals("poi_costo")){
                             		
                                informacionActual.setCosto(parser.nextText());
                                                                                                     		
                            }else
                            	
                             if(etiqueta.equals("poi_cuentaporcentaje")){
                             		
                                informacionActual.setCuentaPorcentaje(parser.nextText());
                                                                                                         		
                             }else
                            	
                             if(etiqueta.equals("poi_entradalibre")){
                              		
                                 informacionActual.setEntradaLibre(parser.nextText());
                                                                                                              		
                             }else
                            	 
                             if(etiqueta.equals("poi_encabezado")){
                               		
                               informacionActual.setEncabezado(parser.nextText());
                                                                                                                  		
                            }else
                            	 

                            	 
                            if (etiqueta.equals("cat_cve"))
                            {
                            	informacionActual.setClave(parser.nextText());
                            } 
                            else if (etiqueta.equals("cat_des"))
                            {
                            	informacionActual.setDescripcion(parser.nextText());
                            } 
                            else if (etiqueta.equals("cat_orden"))
                            {
                            	informacionActual.setOrden(parser.nextText());
                            } 
                            else if (etiqueta.equals("cat_icon"))
                            {
                            	informacionActual.setIcon(parser.nextText());
                            } 
                            else if (etiqueta.equals("ruta_cons"))
                            {
                            	informacionActual.setRutaCons(parser.nextText());
                            } 
                            else if (etiqueta.equals("ruta_nombre"))
                            {
                            	informacionActual.setRutaNombre(parser.nextText());
                            }
//                            else if (etiqueta.equals("cat_cve"))
//                            {
//                            	Log.i("parser cat_eve", "parser cat_eve");
//                            	informacionActual.setCategory(parser.nextText());
//                            } 
                        }
                        break;
                        
                    case XmlPullParser.END_TAG:
                    	
                    	etiqueta = parser.getName();
                    	
                        if (etiqueta.equals("ROW") && informacionActual != null)
                        {
                        	informacion.add(informacionActual);
                        } 
                        break;
                }
                
                evento = parser.next();
            }
        } 
        catch (Exception ex) 
        {
            throw new RuntimeException(ex);
        }
        
        return informacion;
    }
    
	private InputStream getInputStream() 
	{
        try 
        {
            return rssUrl.openConnection().getInputStream();
        } 
        catch (IOException e) 
        {
            throw new RuntimeException(e);
        }
    }
}
